package com.dayu.behavior.observer;

/**
 * 观察者模式：当对象间存在一对多关系时，则使用观察者模式（Observer Pattern）。
 * 比如，当一个对象被修改时，则会自动通知依赖它的对象
 * 一个对象状态改变给其他对象通知的问题，而且要考虑到易用和低耦合，保证高度的协作
 */
public class ObserverText {

    /**
     * RocketMQ、Redis很多模式都是采用观察者模式，订阅-通知这种就属于观察者模式
     * 生活中也随处可见的观察者模式：红灯亮了，大家停车；绿灯亮了，大家开车
     */
    /**
     * 角色：可以视情况而定，角色并不一定全部存在
     * 抽象主题（Subject）角色：也叫抽象目标类，它提供了一个用于保存观察者对象的聚集类和增加、删除观察者对象的方法，以及通知所有观察者的抽象方法。
     * 具体主题（Concrete    Subject）角色：也叫具体目标类，它实现抽象目标中的通知方法，当具体主题的内部状态发生改变时，通知所有注册过的观察者对象。
     * 抽象观察者（Observer）角色：它是一个抽象类或接口，它包含了一个更新自己的抽象方法，当接到具体主题的更改通知时被调用。
     * 具体观察者（Concrete Observer）角色：实现抽象观察者中定义的抽象方法，以便在得到目标的更改通知时更新自身的状态。
     */




}
